import axios from 'axios';
import router from "../router";
axios.defaults.timeout = 5000; // 设置访问超时时间
// axios.defaults.withCredentials = true;  // 设置允许跨域访问
// Content-Type 相应头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 基础URL 访问的
axios.defaults.baseURL = "http://localhost:8081";


// 响应拦截器  返回的情况 获取
 axios.interceptors.response.use(
    response => {
        // 如果reponse里面的status是200，说明访问到接口了 ，否则错误
        if(response.status == 200){
            return Promise.resolve(response);  // 接着执行程序，访问接口
        }else{
            return Promise.reject(response);  // 结束访问接口
        }
    },
    error => {
        if(error.response.status){
            switch(error.response.status){
                case 401 :  // 未登录
                    router.replace({
                        path:'/',
                        query:{
                            redirect: router.currentRoute.fullPath
                        }
                    });
                    break;
                case 404 : // 没找到
                    break;
            }
            return Promise.reject(error.response);
        }
    }
 );



 /**
  *  封装get方法
  */
 export function get(url,params={}){
     return new Promise(
         (resolve,reject) => {
             axios.get(url, {
                 params: params, headers: {
                     "Authorization": window.localStorage.getItem("JWT_TOKEN")
                 }
             })
                 .then(response => {
                     resolve(response.data);
                 })
                 .catch(err => {
                     reject(err);
                 })
         }
     );
 }


 /**
  *  封装post方法
  */
  export function post(url,data={}){
    return new Promise(
        (resolve,reject) => {
            axios.post(url, data, {
                headers: {
                    "Authorization": window.localStorage.getItem("JWT_TOKEN")
                }
            })
                .then(response => {
                    resolve(response.data);
                })
                .catch(err => {
                    reject(err);
                })
        }
    );
}
